perm filename FREE.DIF[EAL,HE] blob sn#701189 filedate 1983-03-18 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	DONE
C00009 00003	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 2,2
C00013 00004	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 2,2
C00016 00005	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 4,4
C00019 00006	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 6,6
C00022 00007	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 6,6
C00026 00008	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 10,10
C00029 00009	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 11,11
C00032 00010	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 12,12
C00035 00011	  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 12,12
C00036 ENDMK
C⊗;
DONE

  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 1,1

**** File 1) FREE.PAS[AL,HE]/1P/9L
1)	C00027 00007	(* records for parser: ident, token, resword *)
1)	C00030 00008	(* process descriptor blocks & environment record definitions *)
1)	C00033 00009	(* definition of AL-ARM messages *)
1)	C00035 00010	(* aux routines from elsewhere *)
1)	C00036 00011	(* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
1)	C00042 00012	(* routine to free up a program once we're done with it: freeStatement *)
1)	C00047 ENDMK
1)	C⊗;
**** File 2) U:FREE.PAS[AL2,RV]/1P/9L
2)	C00026 00007	(* records for parser: ident, token, resword *)
2)	C00029 00008	(* process descriptor blocks & environment record definitions *)
2)	C00032 00009	(* definition of AL-ARM messages *)
2)	C00034 00010	(* aux routines from elsewhere *)
2)	C00035 00011	(* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
2)	C00040 00012	(* routine to free up a program once we're done with it: freeStatement *)
2)	C00045 ENDMK
2)	C⊗;
***************


**** File 1) FREE.PAS[AL,HE]/2P/10L
1)		YARMDEV = (*1B*) 1;	(* device bits for: yellow arm *)
1)		YHANDDEV = (*2B*) 2;
1)		BARMDEV = (*4B*) 4;
1)		BHANDDEV = (*10B*) 8;
1)		VISEDEV = (*20B*) 16;
1)		DRIVERDEV = (*40B*) 32;
1)		GARMDEV = (*100B*) 64;
1)		GHANDDEV = (*200B*) 128;
1)		RARMDEV = (*400B*) 256;
1)		RHANDDEV = (*1000B*) 512;
1)		YELARM = 1;		(* Yellow arm *)
1)		BLUARM = 4;		(* Blue arm *)
1)		FTABLE = (*400B*) 256;		(* Force trans (C) in table coordinates *)
1)		FHAND  = 0;			(*   "	 "    "   " hand coordinate system *)
1)		XFORCE = 0;			(* Force along X direction of C *)
1)		YFORCE = (*1000B*) 512;		(*   "	  "   Y	    "	  "  " *)
1)		ZFORCE = (*2000B*) 1024;	(*   "	  "   Z	    "	  "  " *)
1)		XMOMENT = (*3000B*)1536;	(* Moment about X direction of C *)
1)		YMOMENT = (*4000B*)2048;	(*   "	   "   Y     "	   "  " *)
1)		ZMOMENT = (*5000B*)2560;	(*   "	   "   Z     "	   "  " *)
1)		FSTOP  = (*10000B*)4096;	(* In addition to starting cmon, stop arm *)
1)		SIGMAG = (*20000B*)8192;	(* Test only magnitude of forces *)
1)		SIGGE = (*100000B*) 32768;	(* Start cmon if force ≥ specified value *)
1)		SIGLT = 0;			(*   "	  "  "	  "   <	    "	    " *)
1)		BARMPOWER = 1;			(* bit defs - used in response to initarmscmd *)
1)		YARMPOWER = 2;
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 2,2

1)		GARMPOWER = 4;
1)		RARMPOWER = (*10B*) 8;
1)		GARMCAL = (*400B*) 256;
1)		RARMCAL = (*1000B*) 512;
1)		NULLINGCB = 1;			(* control bits for trajectory specs *)
1)		WOBBLECB = 2;
1)		DURLBCB = (*20B*) 16;		(* Duration: lower, upper & exact bounds *)
1)		DURUBCB = (*40B*) 32;
1)		DUREQCB = (*60B*) 48;
1)		VELOCCB = (*100B*) 64;
1)		CODECB = (*200B*) 128;
1)		VIAPTCB = (*400B*) 256;
1)		DEPRPTCB = (*1000B*) 512;
1)		APPRPTCB = (*2000B*) 1024;
1)		DESTPTCB = (*10000B*) 4096;
1)	  CR   = 13;		(* Carriage return *)
1)	  LF   = 10;		(* Line feed *)
1)	(* random type declarations for OMSI/SAIL compatibility *)
**** File 2) U:FREE.PAS[AL2,RV]/2P/10L
2)		YARMDEV = 1B;		(* device bits for: yellow arm *)
2)		YHANDDEV = 2B;
2)		BARMDEV = 4B;
2)		BHANDDEV = 10B;
2)		VISEDEV = 20B;
2)		DRIVERDEV = 40B;
2)		GARMDEV = 100B;
2)		GHANDDEV = 200B;
2)		RARMDEV = 400B;
2)		RHANDDEV = 1000B;
2)		YELARM = 1B;		(* Yellow arm *)
2)		BLUARM = 4B;		(* Blue arm *)
2)		FTABLE = 400B;		(* Force trans (C) in table coordinates *)
2)		FHAND  = 0B;		(*   "	 "    "   " hand coordinate system *)
2)		XFORCE = 0B;		(* Force along X direction of C *)
2)		YFORCE = 1000B;		(*   "	  "   Y	    "	  "  " *)
2)		ZFORCE = 2000B;		(*   "	  "   Z	    "	  "  " *)
2)		XMOMENT = 3000B;	(* Moment about X direction of C *)
2)		YMOMENT = 4000B;	(*   "	   "   Y     "	   "  " *)
2)		ZMOMENT = 5000B;	(*   "	   "   Z     "	   "  " *)
2)		FSTOP  = 10000B;	(* In addition to starting cmon, stop arm *)
2)		SIGMAG = 20000B;	(* Test only magnitude of forces *)
2)		SIGGE = 100000B;	(* Start cmon if force ≥ specified value *)
2)		SIGLT = 0B;		(*   "	  "  "	  "   <	    "	    " *)
2)		barmpower = 1B;		(* bit defs - used in response to initarmscmd *)
2)		yarmpower = 2B;
2)		garmpower = 4B;
2)		rarmpower = 10B;
2)		garmcal = 400B;
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 2,2

2)		rarmcal = 1000B;
2)		NULLINGCB = 1B;		(* control bits for trajectory specs *)
2)		WOBBLECB = 2B;
2)		(* Duration: 20B, 40B, 60B for lower, upper & exact bounds *)
2)		VELOCCB = 100B;
2)		CODECB = 200B;
2)		VIAPTCB = 400B;
2)		DEPRPTCB = 1000B;
2)		APPRPTCB = 2000B;
2)		DESTPTCB = 10000B;
2)	(* random type declarations for OMSI/SAIL compatibility *)
***************


**** File 1) FREE.PAS[AL,HE]/4P/9L
1)			movetype,jtmovetype,operatetype,opentype,closetype,centertype,
1)			floattype, stoptype, retrytype,
1)			requiretype, definetype, macrotype, commenttype, dimdeftype,
1)			setbasetype, wristtype, saytype, declaretype, emptytype,
1)			evaltype, armmagictype);
1)			(* more??? *)
1)	statement = packed record
1)			next, last: statementp;
1)			stlab: varidefp;
**** File 2) U:FREE.PAS[AL2,RV]/4P/9L
2)			movetype, operatetype, opentype, closetype, centertype,
2)			stoptype, retrytype,
2)			requiretype, definetype, macrotype, commenttype, dimdeftype,
2)			setbasetype, wristtype, tovaltype, declaretype, emptytype);
2)			(* more??? *)
2)	statement = packed record
2)			next, last: statementp; (* ↑ to lexical tokens? *)
2)			stlab: varidefp;
***************


**** File 1) FREE.PAS[AL,HE]/4P/21L
1)			bpt,bad: boolean;
1)			case stype: stmntypes of
**** File 2) U:FREE.PAS[AL2,RV]/4P/20L
2)			bpt: boolean;
2)			case stype: stmntypes of
***************


**** File 1) FREE.PAS[AL,HE]/4P/39L
1)	    aborttype,
1)	    saytype:	    (plist: nodep; debugLev: integer);
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 4,4

1)	    returntype:	    (retval, rproc: nodep);
1)	    evaltype,
1)	    calltype,
**** File 2) U:FREE.PAS[AL2,RV]/4P/38L
2)	    aborttype:	    (plist: nodep);
2)	    returntype:	    (retval, rproc: nodep);
2)	    calltype,
***************


**** File 1) FREE.PAS[AL,HE]/4P/50L
1)	    jtmovetype,
1)	    operatetype,
**** File 2) U:FREE.PAS[AL2,RV]/4P/47L
2)	    operatetype,
***************


**** File 1) FREE.PAS[AL,HE]/4P/55L
1)	    floattype,
1)	    setbasetype,
1)	    stoptype:	    (cf, clauses: nodep);
1)	    retrytype:	    (rcode, rparent: statementp; olevel: integer);
1)	    wristtype:	    (arm, ff, fvec, tvec: nodep; csys: boolean);
1)	    cmtype:	    (oncond: nodep; conclusion: statementp;
**** File 2) U:FREE.PAS[AL2,RV]/4P/51L
2)	    stoptype:	    (cf, clauses: nodep);
2)	    retrytype:	    (rcode, rparent: statementp; olevel: integer);
2)	    cmtype:	    (oncond: nodep; conclusion: statementp;
***************


**** File 1) FREE.PAS[AL,HE]/4P/68L
1)	    armmagictype:   (cmdnum,dev,iargs,oargs: nodep);
1)			end;
**** File 2) U:FREE.PAS[AL2,RV]/4P/61L
2)	    setbasetype,
2)	    wristtype:	    (fvec, tvec: nodep);
2)	    tovaltype:	    (vstr: strngp; vlen: integer; waitp: boolean);
2)			end;
***************


**** File 1) FREE.PAS[AL,HE]/6P/4L
1)			deprnode, viaptnode, apprnode, destnode, byptnode, durnode,
1)			sfacnode, wobblenode, swtnode, nullingnode, wristnode, cwnode,
**** File 2) U:FREE.PAS[AL2,RV]/6P/4L
2)			deprnode, viaptnode, apprnode, destnode, durnode,
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 6,6

2)			sfacnode, wobblenode, swtnode, nullingnode, wristnode, cwnode,
***************


**** File 1) FREE.PAS[AL,HE]/6P/9L
1)			waitlistnode, procdefnode, tlistnode, dimnode, commentnode,
1)			linearnode, elbownode, shouldernode, flipnode, wrtnode,
1)			loadnode,velocitynode);
1)	exprtypes =  (	svalop,					(* scalar operators *)
**** File 2) U:FREE.PAS[AL2,RV]/6P/9L
2)			waitlistnode, procdefnode, tlistnode, dimnode, commentnode);
2)	exprtypes =  (	svalop,					(* scalar operators *)
***************


**** File 1) FREE.PAS[AL,HE]/6P/31L
1)			arefop, callop, grinchop, macroop, vmop, adcop, dacop, jointop,
1)			badop,
**** File 2) U:FREE.PAS[AL2,RV]/6P/29L
2)			arefop, callop, grinchop, macroop, vmop, adcop, dacop,
2)			badop,
***************


**** File 1) FREE.PAS[AL,HE]/6P/43L
1)	    exprnode:	(op: exprtypes; arg1, arg2, arg3: nodep; elength: integer);
1)	    leafnode:	(case ltype: leaftypes of
1)		varitype:  (vari: varidefp; vid: identp);
1)		pconstype: (cname: varidefp; pcval: nodep);
**** File 2) U:FREE.PAS[AL2,RV]/6P/41L
2)	    exprnode:	(op: exprtypes; arg1, arg2, arg3: nodep; elen: integer);
2)	    leafnode:	(case ltype: leaftypes of
2)		varitype:  (vari: varidefp);
2)		pconstype: (cname: varidefp; pcval: nodep);
***************


**** File 1) FREE.PAS[AL,HE]/6P/56L
1)	    wrtnode,
1)	    deprnode,
**** File 2) U:FREE.PAS[AL2,RV]/6P/54L
2)	    departingnode,
2)	    deprnode,
***************


**** File 1) FREE.PAS[AL,HE]/6P/60L
1)	    byptnode,
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 6,6

1)	    viaptnode:	(vlist: boolean; via,vclauses: nodep; vcode: statementp);
1)	    durnode:	(durrel: reltypes; durval: nodep);
1)	    velocitynode,
1)	    sfacnode,
**** File 2) U:FREE.PAS[AL2,RV]/6P/58L
2)	    viaptnode:	(vlist: boolean; via,duration,velocity: nodep; vcode: statementp);
2)	    durnode:	(durrel: reltypes; durval: nodep);
2)	    sfacnode,
***************


**** File 1) FREE.PAS[AL,HE]/6P/67L
1)	    nullingnode,			(* true = nonulling *)
1)	    wristnode,				(*	= don't zero force wrist *)
1)	    cwnode,				(*	= counter_clockwise *)
1)	    elbownode,				(*	= elbow up *)
1)	    shouldernode,			(*	= right shoulder *)
1)	    flipnode,				(*	= don't flip wrist *)
1)	    linearnode:	(notp: boolean);	(*	= linear motion *)
1)	    ffnode:	(ff,cf: nodep; csys, pdef: boolean); (* true = world, false = hand *)
1)	    loadnode:	(loadval,loadvec: nodep; lcsys: boolean); (* lcsys = csys above *)
1)	    forcenode:	(ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
1)	    stiffnode:	(fv, mv, cocff: nodep);
1)	    gathernode:	(gbits: integer);
**** File 2) U:FREE.PAS[AL2,RV]/6P/63L
2)	    nullingnode,
2)	    wristnode,
2)	    cwnode:	(notp: boolean); (* true = nonulling/zero wrist/counter_clockwise *)
2)	    ffnode:	(ff: nodep; csys, pdef: boolean); (* true = world, false = hand *)
2)	    forcenode:	(ftype: forcetypes; frel: reltypes; fval, fvec, fframe: nodep);
2)	    stiffnode:	(fv, mv, coc: nodep);
2)	    gathernode:	(gbits: integer);
***************


**** File 1) FREE.PAS[AL,HE]/6P/85L
1)	    bndvalnode:	(lb, ub, mult: integer);
1)	    waitlistnode: (who: pdbp; when: integer);
1)	    procdefnode:(ptype: datatypes; level: 0..255;
1)			    pname, paramlist: varidefp; body: statementp);
**** File 2) U:FREE.PAS[AL2,RV]/6P/76L
2)	    bndvalnode:	(l, u, mult: integer);
2)	    waitlistnode: (who: pdbp; when: integer);
2)	    procdefnode:(ptype: datatypes; lex: 0..255;
2)			    pname, paramlist: varidefp; body: statementp);
***************


  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 10,10

**** File 1) FREE.PAS[AL,HE]/10P/13L
1)	procedure clrBpt(st: statementp); extern;		(* from EDIT.PAS *)
1)	procedure flushVar(oldvar: varidefp); extern;
1)	(* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
**** File 2) U:FREE.PAS[AL2,RV]/10P/13L
2)	procedure clrBpt(st: statementp); extern;		(* from DEBUG.PAS *)
2)	(* auxiliary routines: freStrng, freeVaridef, freeToken, freeNode *)
***************


**** File 1) FREE.PAS[AL,HE]/11P/43L
1)	others:	    begin end;				(* nothing to do *)
1)	    end;
**** File 2) U:FREE.PAS[AL2,RV]/11P/43L
2)	    end;
***************


**** File 1) FREE.PAS[AL,HE]/11P/69L
1)	  strngtype: if (length <> 2) or (str↑.ch[1] <> chr(CR)) or
1)			(str↑.ch[2] <> chr(LF)) then freStrng(str) else b := false;
1)		   end;
**** File 2) U:FREE.PAS[AL2,RV]/11P/68L
2)	  strngtype: if (length <> 2) or (str↑.ch[1] <> chr(15B)) or
2)			(str↑.ch[2] <> chr(12B)) then freStrng(str) else b := false;
2)		   end;
***************


**** File 1) FREE.PAS[AL,HE]/11P/91L
1)	byptnode,
1)	viaptnode:begin
1)		  freeNode(via);
1)		  freeNode(vclauses);
1)		  freeStatement(vcode);
**** File 2) U:FREE.PAS[AL2,RV]/11P/90L
2)	viaptnode:begin
2)		  freeNode(via);
2)		  freeNode(duration);
2)		  freeNode(velocity);
2)		  freeStatement(vcode);
***************


**** File 1) FREE.PAS[AL,HE]/11P/102L
1)	wrtnode,
1)	velocitynode,
1)	sfacnode,
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 11,11

**** File 2) U:FREE.PAS[AL2,RV]/11P/101L
2)	sfacnode,
***************


**** File 1) FREE.PAS[AL,HE]/11P/113L
1)	elbownode,
1)	shouldernode,
1)	flipnode,
1)	linearnode,
1)	cwnode:	  freeNode(next);
**** File 2) U:FREE.PAS[AL2,RV]/11P/110L
2)	cwnode:	  freeNode(next);
***************


**** File 1) FREE.PAS[AL,HE]/11P/129L
1)	loadnode: begin
1)		  freeNode(loadval);
1)		  freeNode(loadvec);
1)		  freeNode(next);
1)		  end;
1)	stiffnode:begin
**** File 2) U:FREE.PAS[AL2,RV]/11P/122L
2)	stiffnode:begin
***************


**** File 1) FREE.PAS[AL,HE]/11P/137L
1)		  freeNode(cocff);
1)		  freeNode(next);
**** File 2) U:FREE.PAS[AL2,RV]/11P/125L
2)		  freeNode(coc);
2)		  freeNode(next);
***************


**** File 1) FREE.PAS[AL,HE]/12P/23L
1)			st := bcode;
**** File 2) U:FREE.PAS[AL2,RV]/12P/23L
2)			freeVaridef(variables);
2)			st := bcode;
***************


**** File 1) FREE.PAS[AL,HE]/12P/30L
1)			freeVaridef(variables);
1)			end;
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 12,12

**** File 2) U:FREE.PAS[AL2,RV]/12P/31L
2)			end;
***************


**** File 1) FREE.PAS[AL,HE]/12P/78L
1)	aborttype,
1)	saytype:	freeNode(plist);
1)	returntype:	freeNode(retval);
**** File 2) U:FREE.PAS[AL2,RV]/12P/78L
2)	aborttype:	freeNode(plist);
2)	returntype:	freeNode(retval);
***************


**** File 1) FREE.PAS[AL,HE]/12P/99L
1)	jtmovetype,
1)	operatetype,
**** File 2) U:FREE.PAS[AL2,RV]/12P/98L
2)	operatetype,
***************


**** File 1) FREE.PAS[AL,HE]/12P/107L
1)	setbasetype,
1)	stoptype:	freeNode(cf);
1)	cmtype:		begin
1)			if (not exprCm) and (oncond↑.ntype = leafnode) then
1)			  if oncond↑.vari↑.name = nil then flushVar(oncond↑.vari);
1)			flushVar(cdef);
1)			freeNode(oncond);
**** File 2) U:FREE.PAS[AL2,RV]/12P/105L
2)	stoptype:	freeNode(cf);
2)	cmtype:		begin
2)			freeNode(oncond);
***************


**** File 1) FREE.PAS[AL,HE]/12P/128L
1)			freeNode(arm);
1)			freeNode(ff);
1)			freeNode(fvec);
**** File 2) U:FREE.PAS[AL2,RV]/12P/122L
2)			freeNode(fvec);
***************


**** File 1) FREE.PAS[AL,HE]/12P/133L
  1) FREE.PAS[AL,HE] and 2) U:FREE.PAS[AL2,RV]	3-17-83 15:35	pages 12,12

1)	armmagictype:	begin
1)			freeNode(cmdnum);
1)			freeNode(dev);
1)			freeNode(iargs);
1)			freeNode(oargs);
1)			end;
1)	     end;
**** File 2) U:FREE.PAS[AL2,RV]/12P/125L
2)	     end;
***************